1
ข้ามคู่ข้อมูลธรรมดา: การจัดกลุ่มข้อมูลหลายประเภทด้วยเทิพเปิล
AI037Lesson 19
00:00

ในสถาปัตยกรรมของระบบซีพลัสขนาดใหญ่ การกำหนดโครงสร้างแบบเป็นทางการ struct สำหรับการจัดกลุ่มข้อมูลชั่วคราวทุกครั้งมักจะเกินความจำเป็น โครงสร้าง std::tuple ทำหน้าที่เป็น คอนเทนเนอร์ที่หลากหลายโดยทั่วไปแล้ว std::pair เพื่อเก็บข้อมูลหลายชนิดที่แตกต่างกันได้ไม่จำกัดจำนวน

1. การสร้างและการจำกัด

ต่างจากคอนเทนเนอร์มาตรฐาน คือ tuple คอนสตรัคเตอร์คือ ชัดเจนคุณไม่สามารถใช้การเริ่มต้นแบบสำเนาจากลิสต์ได้ คุณต้องใช้การเริ่มต้นโดยตรงหรือ std::make_tuple.

tuple<int, double> t1{1, 2.5}; // ถูกต้อง
tuple<int, double> t2 = {1, 2.5}; // ผิดพลาด!

2. การเข้าถึงและการตรวจสอบข้อมูลภายใน

สมาชิกถูกเข้าถึงผ่าน get<i>(ชื่อเทิพเปิล)โดยที่ i ต้องเป็นค่าคงที่ที่รู้ได้ตั้งแต่ตอนคอมไพล์ ข้อมูลเมตาสามารถสอบถามได้ผ่าน tuple_size และ tuple_element โดยใช้ decltype.

โครงสร้างหน่วยความจำของ std::tuplestringget<0>intget<1>doubleget<2>

3. ตรรกะเชิงความสัมพันธ์

เทิพเปิลถูกเปรียบเทียบกันโดย ตามลำดับคำศัพท์ (เล็กซิกราฟิก)การเปรียบเทียบจะถูกต้องก็ต่อเมื่อเทิพเปิลทั้งสองมีจำนวนสมาชิกเท่ากัน และชนิดข้อมูลที่สัมพันธ์กันรองรับเครื่องหมายเปรียบเทียบ

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>